package com.t2t.top;

import org.testng.annotations.Test;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * Class.isAssignableFrom():是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口类。
 * instanceof:是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
 */
public class AssignableTest {


    /**
     * 判断一个类是否是另一个类的父类
     * 是打印true
     * 否打印false
     */
    @Test
    public void testIsAssignedFrom1() {
        System.out.println("String是Object的父类:" + String.class.isAssignableFrom(Object.class));
    }

    /**
     * 判断一个类是否是另一个类的父类
     * 是打印true
     * 否打印false
     */
    @Test
    public void testIsAssignedFrom2() {
        System.out.println("Object是String的父类:" + Object.class.isAssignableFrom(String.class));
    }

    /**
     * 判断一个类是否和另一个类相同
     * 是打印true
     * 否打印false
     */
    @Test
    public void testIsAssignedFrom3() {
        System.out.println("Object和Object相同:" + Object.class.isAssignableFrom(Object.class));
    }

    /**
     * 判断一个类是否和另一个接口
     * 是打印true
     * 否打印false
     */
    @Test
    public void testIsAssignedFrom4() {
        System.out.println("Map是HashMap接口类:" + Map.class.isAssignableFrom(HashMap.class));
    }

    /**
     * 判断一个类是否和另一个接口
     * 是打印true
     * 否打印false
     */
    @Test
    public void testIsAssignedFrom5() {
        System.out.println("HashMap是Map接口类:" + HashMap.class.isAssignableFrom(Map.class));
    }


    /**
     * 判断str是否是Object类的实例
     * 是打印true
     * 否打印false
     */
    @Test
    public void testInstanceOf1() {
        String str = new String();
        System.out.print("str是Object的实例:");
        System.out.println(str instanceof Object);
    }

    /**
     * 判断o是否是Object类的实例
     * 是打印true
     * 否打印false
     */
    @Test
    public void testInstanceOf2() {
        Object o = new Object();
        System.out.print("o是Object的实例:");
        System.out.println(o instanceof Object);
    }


}
